home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 235 / Issue 235 - September 2007 - DPCS0907DVD.ISO / Extras / NetObjects Fusion / NOF10.exe / data1.cab / FSI / lib / nof / publish / PublishServerManager.js < prev   
Encoding:
Text File  |  2007-04-11  |  11.6 KB  |  383 lines

  1. /****i* SOURCE_FILE/INFO
  2. *
  3. * NAME
  4. *    PublishServerManager.js
  5. *
  6. * USAGE
  7. *    Part of WPS JavaScript Library.
  8. *
  9. * COPYRIGHT
  10. *    Copyright ⌐ 2000-2001 Website Pros, Inc.
  11. *    All Rights Reserved.
  12. *
  13. *  This is an unpublished work protected by Website Pros, Inc.
  14. *  as a trade secret, and is not to be used or disclosed except as
  15. *  expressly provided in a written license agreement executed by
  16. *  you and Website Pros, Inc.
  17. *
  18. *      <copyright@websitepros.com>
  19. *
  20. * NOTES
  21. *    JavaScript code.
  22. *
  23. *****/
  24. if (!IS.isModuleInitialized("IS.NOF.PUBLISH.PublishServerManager"))
  25. {
  26.     /** 
  27.     * Class PublishServerManager
  28.     *
  29.     * External dependencies: NOF.UTIL.ResourceBundle, NOF.UTIL.DefaultLocale, NOF.UTIL.Iterator
  30.     **/
  31.     function NOF_PublishServerManager( ) {
  32.         //NOF.util_logging_ConsoleLogger_global.info("PublishSettingsManager begin");
  33.         this.__proto__ = NOF_PublishServerManager.prototype;  
  34.         this.profileList = null;
  35.         this.publishServerList = null;
  36.         //NOF.util_logging_ConsoleLogger_global.info("PublishSettingsManager end");
  37.         return this;
  38.     }
  39.     {      
  40.         var members = NOF_PublishServerManager.prototype;
  41.         members.CLASS_NAME = "PublishServerManager";
  42.         members.PATH_SEPARATOR = "\\";
  43.         
  44.         var methods = NOF_PublishServerManager.prototype;
  45.         
  46.         /**
  47.         * get the list (key, value) of the available server types
  48.         * (iterates the FSI/PublishSettings subfolders and reads from the corresponding resource 
  49.         * the value of the property "publishServer.type.Label"
  50.         **/        
  51.         methods.getPublishServerTypes = function () {
  52.             //NOF.util_logging_ConsoleLogger_global.info("getProfileList begin");
  53.             
  54.             if (this.profileList == null) {
  55.                 this.profileList = new Array();
  56.                 var iter = new ActiveXObject(NOF.ProgId.FSIDirIterator);
  57.                 iter.DefineSearch("./PublishSettings", '*');
  58.                 var fileName;
  59.                 var rs;
  60.                 for (;;) {
  61.                     var p = iter.GetNext();
  62.                     if (p.length <= 0) {
  63.                         break;
  64.                     }
  65.                     fileName = p.substring(p.lastIndexOf(this.PATH_SEPARATOR) + 1, p.length);
  66.                     if ((fileName.indexOf(".") > -1) || (fileName == "lib")) {
  67.                         continue;
  68.                     }
  69.                     //NOF.util_logging_ConsoleLogger_global.info("Type # " + p + ", fileName=" + fileName);
  70.                     rs = NOF.UTIL.ResourceBundle.getBundle("PublishSettings/" + fileName + "/" + fileName, NOF.UTIL.DefaultLocale);
  71.                     if (rs != null) {
  72.                         this.profileList[this.profileList.length] = [ rs.getProperty("publishServer.type.Label"), fileName ];
  73.                     }
  74.                 }                
  75.             }
  76.             
  77.             return new NOF.UTIL.Iterator(this.profileList);
  78.         }
  79.         
  80.         /**
  81.         * getAllPublishServers
  82.         **/
  83.         methods.getAllPublishServers = function () {
  84.             if (this.publishServerList == null) {
  85.                 this.publishServerList = new Array();
  86.                 
  87.                 var pubMan = new ActiveXObject(NOF.ProgId.PublishServerManager);
  88.                 var servers = pubMan.GetAllPublishServers();
  89.                 for (var i = 0; i < servers.Count(); i++) {
  90.                     var server = servers.GetNext();
  91.                     if (server) {
  92.                         this.publishServerList[this.publishServerList.length] = new NOF.PUBLISH.PublishServer(server);
  93.                     }
  94.                 }
  95.                 pubMan = null;
  96.  
  97.                 var temp = new NOF.PUBLISHSETTINGS.PublishConfigFile("temp");
  98.                 var cList = temp.getConfigFiles();
  99.                 //NOF.util_logging_ConsoleLogger_global.info("Global profiles " + cList.length);
  100.                 for (var i = 0; i < cList.length; i++){
  101.                       //make as PublishServer...
  102.                       //NOF.util_logging_ConsoleLogger_global.info("Global profile: " + cList[i]);
  103.                       var glSrv = new NOF.PUBLISH.PublishServer( cList[i] );
  104.                       //glSrv.setName(cList[i]);
  105.                     //try { alert("profile xml=" + cList[i] + ", name=" + glSrv.getName()); } catch(e) {alert(e.message);}
  106.                     this.publishServerList[this.publishServerList.length] = glSrv;
  107.                 }
  108.             }
  109.             return new NOF.UTIL.Iterator(this.publishServerList);
  110.         }
  111.         
  112.         /**
  113.         * addServer
  114.         **/
  115.         methods.addServer = function (/*PublishServer*/ publishServer) {
  116.             this.publishServerList[this.publishServerList.length] = publishServer;
  117.         }
  118.  
  119.         /**
  120.         * createServer
  121.         **/
  122.         methods.createServer = function (/*String*/ pName, /*boolean*/ isGlobal) {
  123.             //TODO: add server to list
  124.             if (!isGlobal) {
  125.                 var pubMan = new ActiveXObject(NOF.ProgId.PublishServerManager);
  126.                 var server = pubMan.NewPublishServer(pName);
  127.                 pubMan = null;
  128.                 return new NOF.PUBLISH.PublishServer(server); //NOF_PublishServer(server);            
  129.                 //return server;
  130.             } else {
  131.                 var newServerName = (pName.indexOf("Global ") == 0) ? pName : "Global " + pName; //NOF.Util.generateGuid(pName);
  132.                 //pName + "_" + (new Date()).getTime() + parseInt(Math.random() * 1000);
  133.                 var ps = new NOF.PUBLISH.PublishServer(newServerName); //NOF_PublishServer(pName);
  134.                 ps.setName(pName);
  135.                 return ps;
  136.             }
  137.         }
  138.  
  139.         /**
  140.         * deleteServer
  141.         **/
  142.         methods.deleteServer = function (/*PublishServer*/ publishServer) {
  143.             for (var i = 0; i < this.publishServerList.length; i++) {
  144.                 if (this.publishServerList[i].getName() == publishServer.getName()) {
  145.                     this.publishServerList.removeItem(i);
  146.                     break;
  147.                 }
  148.             }
  149.             //publishServer.remove();
  150.             if (publishServer.isGlobal()) {
  151.                 publishServer.getPublishServer().deleteConfigFile();
  152.             } else {
  153.                 var pubMan = new ActiveXObject(NOF.ProgId.PublishServerManager);
  154.                 pubMan.DeleteServer(publishServer.getPublishServer());
  155.                 pubMan = null;
  156.             }
  157.         }
  158.         
  159.         /**
  160.         * GetCurrentServer
  161.         **/
  162.         methods.getCurrentServer = function () {
  163.             var pubMan = new ActiveXObject(NOF.ProgId.PublishServerManager);
  164.             var server = pubMan.CurrentServer;
  165.             pubMan = null;
  166.             //NOF.UTIL.LOGGING.getLogger("PublishSettings").info("typeof server " + typeof(server), "PublishServerManager", "getCurrentServer");
  167.             return new NOF.PUBLISH.PublishServer(server); //NOF_PublishServer(server);
  168.         }
  169.  
  170.         /**
  171.         * SetCurrentServer
  172.         **/
  173.         methods.setCurrentServer = function (/*PublishServer*/ publishServer) {
  174.             if (!publishServer.isGlobal()) {
  175.                 var pubMan = new ActiveXObject(NOF.ProgId.PublishServerManager);
  176.                 pubMan.CurrentServer = publishServer.getPublishServer();
  177.                 pubMan = null;
  178.             }
  179.         }
  180.         
  181.         /**
  182.         * GetPrimaryServer
  183.         **/
  184.         methods.getPrimaryServer = function () {
  185.             var pubMan = new ActiveXObject(NOF.ProgId.PublishServerManager);
  186.             var server = pubMan.PrimaryServer;
  187.             pubMan = null;
  188.             //NOF.UTIL.LOGGING.getLogger("PublishSettings").info("typeof server " + typeof(server), "PublishServerManager", "getCurrentServer");
  189.             return server ? new NOF.PUBLISH.PublishServer(server) : null;
  190.         }
  191.  
  192.         /**
  193.         * SetPrimaryServer
  194.         **/
  195.         methods.setPrimaryServer = function (/*PublishServer*/ publishServer) {
  196.             
  197.             // When delete primary profile
  198.             if (publishServer == null) {
  199.                 var pubMan = new ActiveXObject(NOF.ProgId.PublishServerManager);
  200.                 pubMan.PrimaryServer = null;
  201.                 pubMan = null;
  202.                 
  203.                 return;
  204.             }
  205.         
  206.             if (publishServer && !publishServer.isGlobal()) {
  207.                 var pubMan = new ActiveXObject(NOF.ProgId.PublishServerManager);
  208.                 pubMan.PrimaryServer = publishServer.getPublishServer();
  209.                 pubMan = null;
  210.             }
  211.         }
  212.         
  213.         /**
  214.         * GetVersionsManagerServer
  215.         **/
  216.         methods.getVersionsManagerServer = function () {
  217.             var pubMan = new ActiveXObject(NOF.ProgId.PublishServerManager);
  218.             var server = pubMan.VersionsManagerServer;
  219.             pubMan = null;
  220.             //NOF.UTIL.LOGGING.getLogger("PublishSettings").info("typeof server " + typeof(server), "PublishServerManager", "getCurrentServer");
  221.             return server ? new NOF.PUBLISH.PublishServer(server) : null;
  222.         }
  223.  
  224.         /**
  225.         * SetVersionsManagerServer
  226.         **/
  227.         methods.setVersionsManagerServer = function (/*PublishServer or -1*/ publishServer) {
  228.             var pubMan = new ActiveXObject(NOF.ProgId.PublishServerManager);
  229.             if (publishServer == -1)
  230.                 pubMan.VersionsManagerServer = -1;
  231.             else if (!publishServer)
  232.                 pubMan.VersionsManagerServer = null;
  233.             else if (!publishServer.isGlobal())
  234.                 pubMan.VersionsManagerServer = publishServer.getPublishServer();
  235.             pubMan = null;
  236.         }
  237.         
  238.         /**
  239.         * UsePrimaryServerAsVersionsManager
  240.         **/
  241.         methods.usePrimaryServerAsVersionsManager = function () {
  242.             var pubMan = new ActiveXObject(NOF.ProgId.PublishServerManager);
  243.             var result = pubMan.UsePrimaryServerAsVersionsManager;
  244.             pubMan = null;
  245.             return result;
  246.         }
  247.  
  248.         /**
  249.         *  Register local as global.
  250.         **/
  251.         methods.registerLocalAsGlobal = function (/*PublishServer*/ publishServer) {
  252.             if (!publishServer.isGlobal()) {
  253.                 var pName = this.getValidProfileName("Global " + publishServer.getName());
  254.                 //log.info("RegisterAsGlobal: newName: " + pName);
  255.  
  256.                 publishServer.getPublishServer().SaveGlobal(pName);
  257.                 
  258.                 //log.info("RegisterAsGlobal: saved as Global");
  259.  
  260.                 var temp = new NOF.PUBLISHSETTINGS.PublishConfigFile("temp");
  261.                 var cList = temp.getConfigFiles();
  262.                 for (var i = 0; i < cList.length; i++) {
  263.                     if (cList[i] == pName) {
  264.                         var newSrv = new NOF.PUBLISH.PublishServer( cList[i] );
  265.                           this.addServer(newSrv);
  266.                           
  267.                           return newSrv;
  268.                       }
  269.                 }
  270.             }
  271.         }
  272.  
  273.         /**
  274.         *  Register as global as local.
  275.         **/
  276.         methods.registerGlobalAsLocal = function (/*PublishServer*/ publishServer) {
  277.             if (publishServer.isGlobal()) {
  278.                 var pName = this.getValidProfileName(publishServer.getName());
  279.                 var newSrv = this.createServer( pName, false );
  280.                 newSrv.getPublishServer().GetGlobal(publishServer.publishProfile.configFileName); /*publishServer.getName()*/
  281.  
  282.                 this.addServer(newSrv);
  283.                 
  284.                 return newSrv;
  285.             }
  286.         }
  287.  
  288.         /**
  289.         *  Register as global as local with edit.
  290.         **/
  291.         methods.loadLocalFromGlobal = function (/*PublishServer*/ publishServer, /*PublishServer*/ publishServerLocal) {
  292.             if (publishServer.isGlobal()) {
  293.                 var origName = publishServerLocal.getName();
  294.                 try {
  295.                     publishServerLocal.getPublishServer().GetGlobal(publishServer.publishProfile.configFileName); /*publishServer.getName()*/
  296.                     publishServerLocal.setName(origName);
  297.                 } catch(e) {
  298.                     //alert(e.message);
  299.                 }
  300.                 return publishServerLocal;
  301.             }
  302.         }
  303.         
  304.         /**
  305.         *  
  306.         **/
  307.         methods.getAssociatedProfile = function (/*PublishServer*/ publishServer) {
  308.             var assocProfile = null;
  309.             
  310.             var pssIter = this.getAllPublishServers();
  311.             if (publishServer.isGlobal()) {
  312.                 var pssLocal;
  313.                 for (; pssIter.hasNext();) {
  314.                     pssLocal = pssIter.next();
  315.                     if (!pssLocal.isGlobal() && (publishServer.publishProfile.configFileName == pssLocal.getGlobalFileName())) {
  316.                         assocProfile = pssLocal;
  317.                         break;
  318.                     }                    
  319.                 }
  320.             } else {
  321.                 //is local (in-site) profile
  322.                 if (publishServer.hasGlobalProfile()) {
  323.                     var globalFileName = publishServer.getGlobalFileName();
  324.                     var pssGlobal;
  325.                     for (; pssIter.hasNext();) {
  326.                         pssGlobal = pssIter.next();
  327.                         if (pssGlobal.isGlobal() && (globalFileName == pssGlobal.getGlobalFileName())) {
  328.                             assocProfile = pssLocal;
  329.                             break;
  330.                         }                    
  331.                     }
  332.                 }
  333.                 
  334.             }
  335.             
  336.             return assocProfile;    
  337.         }
  338.         
  339.  
  340.         /**
  341.         * getValidProfileName
  342.         **/
  343.         methods.getValidProfileName = function (/*string*/ candidateName) {
  344.             
  345.             var pName = candidateName;
  346.             
  347.             var psList = this.publishServerList;
  348.             var listLength = psList.length;
  349.             var current = -1;
  350.             var value;
  351.             var server;
  352.             var name;
  353.             for (var i = 0; i < listLength; i++) {                
  354.                 server = psList[i];
  355.                 if (server) {
  356.                     name = server.getName();
  357.                     if (name.substr(0, pName.length) == pName) {
  358.                         name = name.substr(pName.length);
  359.                         if (name.length) {
  360.                             value = name - 0;
  361.                         } else {
  362.                             value = 0;
  363.                         }
  364.                         if (value > current) {
  365.                             current = value;
  366.                         }
  367.                     }
  368.                 }
  369.             }
  370.             
  371.             if (current != -1) {
  372.                 //current = 0;
  373.                 pName = pName + (current + 1);
  374.             }
  375.             
  376.             return pName;
  377.         }
  378.         
  379.         
  380.     }
  381.     
  382.     NOF.PUBLISH.__proto__.PublishServerManager = NOF_PublishServerManager;
  383. }